"""
任务路由模块
定义任务管理相关的API路由
"""

from flask import Blueprint, jsonify, request
import threading
from app.tasks.service import create_task, get_task_status, delete_task, run_task

tasks_bp = Blueprint('tasks', __name__)

@tasks_bp.route('/tasks/start', methods=['POST'])
def start_task():
    """
    启动一个新的模拟任务
    方法: POST
    返回:
        JSON格式的任务ID和状态信息
    """
    # 创建新任务
    task_id = create_task()

    # 在后台线程中执行任务，避免阻塞主线程
    thread = threading.Thread(target=run_task, args=(task_id,))
    thread.daemon = True
    thread.start()

    # 返回任务ID和启动状态
    return jsonify({
        "task_id": task_id,
        "status": "started"
    })

@tasks_bp.route('/tasks/status/<task_id>')
def task_status(task_id):
    """
    获取指定任务的状态信息
    方法: GET
    参数:
        task_id (str): 任务唯一标识符
    返回:
        JSON格式的任务状态信息或错误信息
    """
    task = get_task_status(task_id)
    if task:
        return jsonify(task)
    else:
        return jsonify({"error": "Task not found"}), 404

@tasks_bp.route('/tasks/reset/<task_id>', methods=['DELETE'])
def reset_task(task_id):
    """
    重置（删除）指定任务
    方法: DELETE
    参数:
        task_id (str): 任务唯一标识符
    返回:
        JSON格式的成功消息或错误信息
    """
    if delete_task(task_id):
        return jsonify({"message": "Task reset"})
    else:
        return jsonify({"error": "Task not found"}), 404
